SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spAltaDeNovedadesDeConciliacionLU] 
@Agente Int,
@Fecha Varchar(10),
@Movimiento Int,
@IDS Int,
@Legajo Int,
@FechaDesde Varchar(10),
@FechaHasta Varchar(10),
@SituacionRevista Int,
@CargoSalarial Int,
@Horas Int,
@Licencia Int,
@Plaza Int,
@UbicacionOriginal Int
AS
SET NOCOUNT ON
Set Dateformat DMY

Declare @FFecha Datetime, @FFechaDesde Datetime, @FFechaHasta Datetime, @Cuise Int
Declare @Mensaje Varchar(100)

Select @Mensaje = 'OK'

If @Fecha = '-1'
	Select @FFecha = Getdate()

If @FechaDesde <> '-1'
	Select @FFechaDesde = Convert(smalldatetime, @FechaDesde)
Else
	Select @FFechaDesde = Null

If @FechaHasta <> '-1'
	Select @FFechaHasta = Convert(smalldatetime, @FechaHasta)
Else
	Select @FFechaHasta = Null

If @IDS = -1
	Select @IDS = Null

If @Legajo = -1
	Select @Legajo = Null

If @SituacionRevista = -1
	Select @SituacionRevista = Null

If @CargoSalarial = -1
	Select @CargoSalarial = Null

If @Horas = -1
	Select @Horas = Null

If @Licencia = -1
	Select @Licencia = Null

If @Plaza = -1
	Select @Plaza = Null

If @UbicacionOriginal = -1
	Select @UbicacionOriginal = Null

If @Agente <> -1
	Select @Agente = idAgente From tb_Afiliaciones Where NumeroAfiliado = @Agente

If @Agente = -1 And @IDS Is Not Null
	Select @Agente = Agente From tb_ServiciosAgentes Where idServicioAgente = @IDS


/*************************************************************** CHEQUEOS **************************************************************************/

-- ALTAS
If @Movimiento = 1 And (@Plaza Is Null Or @SituacionRevista Is Null Or @CargoSalarial Is Null Or @FFechaDesde Is Null
	Or ( (Select RegimenSalarial From tb_Cargos Where idCargo = @CargoSalarial) = 13 And @Horas Is Null))
Begin	
	Select @Mensaje = 'El Movimiento de Alta exige: AGENTE, PLAZA, CARGO SALARIAL, HORAS (si es regimen por horas) Y FECHA DESDE'
	If @SituacionRevista in (1,2) And Exists(Select * From tb_ServiciosAgentes Where ( (FechaBaja Is Not Null  And FechaBaja > @FFechaDesde) Or (FechaBaja Is Null) ) 
		And SituacionRevista In (1,2))
		Select @Mensaje = @Mensaje + '\nSi se da de alta el servicio existirán dos o mas servicios titulares o interinos'
	Goto SALIR
End

-- BAJAS
If @Movimiento = 2 And (@IDS Is Null Or @FFechaHasta Is Null)
Begin
	Select @Mensaje = 'El Movimiento de Baja exige: IDS, FECHA HASTA'
	Goto SALIR
End

If @Movimiento = 2 And @IDS Is Not Null Or @FFechaHasta Is Not Null
Begin
	Declare @FechaAltaServicio Datetime
	Select @FechaAltaServicio = FechaAlta From tb_ServiciosAgentes Where idServicioAgente = @IDS

	If @FechaAltaServicio >= @FFechaHasta
	Begin
		Select @Mensaje = 'La Fecha de Baja del Servicio debe ser posterior a la de Alta'
		Goto SALIR
	End
End

-- MOD. SITUACIOND DE REVISTA
If @Movimiento = 4 And (@IDS Is Null Or @SituacionRevista Is Null)
Begin
	Select @Mensaje = 'El movimiento de Modificacion de Situacion de Revista exige: IDS, SITUACION DE REVISTA'
	Goto SALIR
End

-- MOD. CARGO SALARIAL
If @Movimiento = 5 And (@IDS Is Null Or @CargoSalarial Is Null)
Begin
	Select @Mensaje = 'El movimiento de modificacion de Cargo Salarial exige: IDS, CARGO SALARIAL'
	Goto SALIR
End

-- MOD. HORAS
If @Movimiento = 6 And (@IDS Is Null Or ((Select tb_Cargos.RegimenSalarial From tb_Cargos, tb_ServiciosAgentes Where CargoSalarial = idCargo And idCargo = @CargoSalarial) = 13 And @Horas Is Null))
Begin
	Select @Mensaje = 'El movimiento de modificacion de horas exige: IDS, HORAS (si es regimen por horas)'
	Goto SALIR
End

If @Movimiento = 7 And (@IDS Is Null Or @Plaza Is Null Or @FFechaDesde Is Null)
Begin
	Select @Mensaje = 'El movimiento de modificacion de ubicacion exige: IDS, PLAZA, FECHA DESDE'
	Goto SALIR
End

--If @Movimiento = 7 And @IDS Is Not Null And @Plaza Is Not Null And @FFechaDesde Is Not Null
--Begin
	
--End

-- LICENCIAS
If @Movimiento = 8 And (@IDS Is Null Or @FFechaDesde Is Null Or @Licencia Is Null)
Begin
	Select @Mensaje = 'El movimiento de Licencia exige: IDS, FECHA DESDE, LICENCIA'
	Goto SALIR
End

-- LICENCIAS
If @Movimiento = 8 And @IDS Is Not Null And @FFechaDesde Is Not Null And @Licencia Is Not Null
Begin
	Declare @FechaAltaUltimoSS Datetime
	Select @FechaAltaUltimoSS = FechaAlta From tb_SubServiciosAgentes Where ServicioAgente = @IDS And FechaBaja Is Null
	If @FFechaDesde <= @FechaAltaUltimoSS And ( (@FFechaHasta Is Null) Or (@FFechaHasta Is Not Null And @FFechaHasta >= @FechaAltaUltimoSS) )
	Begin
		Select @Mensaje = 'El movimiento generará un SubServicio superpuesto dentro del Servicio'
		Goto SALIR
	End
End

/************************************************************ FIN DE CHEQUEOS *******************************************************************/

If Not Exists(Select * From tb_NovedadesDeConciliacionLU Where Agente = @Agente And NuevaSituacionRevista = @SituacionRevista And NuevasHoras = @Horas
	And NuevoCargoSalarial = @CargoSalarial And @Licencia = Licencia And Plaza = @Plaza And Movimiento = @Movimiento)
	
	Insert tb_NovedadesDeConciliacionLU 
		Select @Agente, @FFecha, @Movimiento, @IDS, @Legajo, @FFechaDesde, @FFechaHasta, @SituacionRevista, @CargoSalarial,
		@Horas, @Licencia, @Plaza, 3, @UbicacionOriginal
Else
Begin
	Select @Mensaje = 'El movimiento que desea agregar ya existe'
	Goto SALIR
End
	
SALIR:
	Select @Mensaje Resultado
GO
